With bandwidths and data transfer rates of telecommunication systems continuing to advance, many of today's computing needs are shifting towards network-based distributed computing systems, commonly referred to as “cloud computing.” Generally speaking, cloud computing involves offloading certain computing tasks to one or more remote computing resources and utilizing the remote computing resources to provide services. In many instances, the computing resources can be entirely or almost entirely offloaded to the cloud, with an end user's device providing little or no more than a user interface for the cloud computing task, allowing potentially any internet connected device to serve as a client for a particular application. Cloud computing has previously been implemented as a client-server model, with a remote server providing desired computing capabilities to a local client device, avoiding the need for the local client device to perform certain computing tasks on its own. More recently, cloud computing has evolved to encompass remote execution where elasticity of computational resources is provided by dynamically expanding and load balancing across resources. Cloud computing has become increasingly characterized by functions that run remotely but do not necessarily report back to local clients. Many functions run on cloud report to other functions on the cloud to enable elastic compute and dynamic allocation of resources.
Cloud computing has been adopted in a wide variety of computing services, including remote data storage solutions, music and video streaming services, and a wide variety of other consumer and business solutions. In general, cloud computing provides several well-known benefits, including increased efficiencies through the use of shared resources, increased flexibility in accessing content without restriction to a particular device, lower up-front costs when hardware upgrades become available, and other advantages.
One arena in which cloud computing has yet to achieve widespread adoption is in the ever popular field of video gaming. Video games, including personal computer (PC) games, home console games, handheld console games, and the like, remain a popular source of entertainment among consumers. With a large and ever growing collection of available video game titles, cloud gaming provides a particularly attractive solution to many video game demands. Ideally, within a cloud gaming framework a user would be able to instantly access any video game title from among a vast collection of remotely stored titles, without needing a physical copy of the game, without having to wait for the title to download, and without locally possessing the hardware system or resources needed to run the game. Unfortunately, implementing this type of service within a traditional cloud computing server design presents several technical challenges that have thus far prevented widespread adoption of cloud gaming for many video game platforms.
One challenge is that many of today's video games are very fast paced and action packed, with advanced graphics that require a significant amount of computing resources to render. Particularly in a video streaming based server design, in which all of the game computations and graphics rendering computations are performed remotely, the game needs be able to perform all these tasks and deliver a compressed audio/video stream to the client device with minimal to no perceptible latency in response to control inputs. Otherwise, this may disrupt the timing for the player and fail to replicate the responsiveness of a traditional locally executed gaming session.
Another challenge stems from the fact that there has traditionally been a distinction between PC games on the one hand, which are designed to run on personal computers, laptops, and other computing systems of a general purpose nature, and console games on the other hand, which are designed to run on specialized systems known as video game consoles. Video game consoles are typically designed as embedded platforms having unique computing architectures specially adapted for the video gaming environment. Using dedicated console hardware as a video gaming platform provides several benefits, particularly in the form of optimizing the hardware for the high computing resource demands of graphics rendering and gaming computations required to produce many of today's video games. As a result, while PC games have achieved some popularity, console games have traditionally dominated the video game market and may continue to do so in the future.
However, adapting video game consoles and other embedded platforms to a cloud streaming service presents several challenges. Extensive modifications of the hardware or software architecture of the specialized platform may present compatibility issues with applications designed for the specialized platform. As a result, traditional storage server and storage virtualization techniques are not a viable solution for cloud based streaming of applications designed for many of these platforms. Additionally, modern console architecture is constantly changing and being updated in response to user requirements and desires. Accordingly, problems may arise if a system utilized by a cloud streaming service has not been updated to the latest architecture.
It is within this context that the present disclosure arises.